Apex Heap Size এবং CPU Time Limit

Computer Programming - এপেক্স (Apex) Apex Governor Limits (Apex Governor Limits) |
222
222

Apex Heap Size এবং CPU Time Limit Salesforce-এ কোডের কার্যক্ষমতা ও কার্যক্ষম সীমার মধ্যে কার্যক্রম পরিচালনা করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।


Apex Heap Size

Heap Size হলো এমন একটি সীমা, যা একটি Transaction চলাকালীন মেমোরিতে সংরক্ষিত ডেটার সর্বোচ্চ আকারকে নির্ধারণ করে। Apex-এ একটি Transaction চলাকালীন সর্বাধিক ৬ এমবি (Synchronous Apex) এবং ১২ এমবি (Asynchronous Apex) পর্যন্ত Heap Size ব্যবহার করা যায়। যদি Heap Size লিমিট অতিক্রম করে, তাহলে একটি "Apex heap size too large" Exception তৈরি হয় এবং Transaction বন্ধ হয়ে যায়।

Heap Size ব্যবহারের কারণ

  1. বড় ডেটাসেট প্রসেসিং: বড় ডেটাসেট নিয়ে কাজ করার সময় অনেক ডেটা মেমোরিতে সংরক্ষণ করতে হয়, যা Heap Size ব্যবহার করে।
  2. অবজেক্ট এবং ডেটা সংগ্রহ: যখন একটি Transaction-এ বড় ডেটা সংগ্রহ বা অনেক অবজেক্ট তৈরি করা হয়, তখন তা মেমোরিতে জমা হয়, যা Heap Size-এ প্রভাব ফেলে।
  3. দ্বিতীয় বার মেমোরি ব্যবহার: কোনো মেমোরি ক্রিয়েশন বা ডেটা স্টোরেজ পুনরাবৃত্তি হলে Heap Size দ্রুত পূর্ণ হয়।

Heap Size অপ্টিমাইজ করার কৌশল

  • Collections এড়িয়ে চলুন: যখন বড় ডেটাসেট নিয়ে কাজ করছেন, তখন অপ্রয়োজনীয় Collections এড়িয়ে চলুন এবং যেসব ডেটা আর প্রয়োজন নেই তা null সেট করুন।
  • SOQL Query Results Filter করুন: SOQL কুয়েরিতে প্রয়োজনীয় ফিল্ড এবং রেকর্ডগুলো ফেরত দিন এবং Limit ব্যবহার করুন।
  • Batch Apex ব্যবহার করুন: বড় ডেটাসেট প্রসেস করার জন্য Batch Apex ব্যবহার করুন, যা একাধিক ব্যাচে ডেটা প্রসেস করে এবং Heap Size লিমিটের মধ্যে থাকে।

উদাহরণ: Heap Size অপ্টিমাইজেশন

public class HeapSizeExample {
    public void processLargeData() {
        List<Account> accounts = [SELECT Id, Name FROM Account LIMIT 1000];
        
        // প্রয়োজন শেষে বড় ডেটাসেট ক্লিয়ার করা
        accounts = null;
        System.debug('Heap Size optimized by clearing unused data');
    }
}

Apex CPU Time Limit

CPU Time Limit হলো এমন একটি সীমা, যা একটি Transaction-এ কোড এক্সিকিউশনের সময় নির্ধারণ করে। Salesforce একটি Transaction-এ সর্বাধিক ১০,০০০ মিলিসেকেন্ড (১০ সেকেন্ড) পর্যন্ত CPU সময় বরাদ্দ করে। যদি কোনো Transaction CPU Time Limit অতিক্রম করে, তবে "Apex CPU time limit exceeded" Exception তৈরি হয় এবং Transaction বন্ধ হয়ে যায়।

CPU Time Limit ব্যবহারের কারণ

  1. বড় লজিক বা কমপ্লেক্স কোড: যদি কোডে অনেক লজিক্যাল স্টেটমেন্ট থাকে বা কমপ্লেক্স অ্যালগরিদম ব্যবহার করা হয়, তাহলে CPU সময় দ্রুত শেষ হয়ে যায়।
  2. Loop বা Recursive Trigger: Loop বা Recursive Trigger ব্যবহার করলে কোডের এক্সিকিউশন বার বার হতে পারে, যা CPU সময় দ্রুত ব্যবহার করে ফেলে।
  3. বেশি DML বা SOQL অপারেশন: বেশি পরিমাণ DML বা SOQL অপারেশন চালালে CPU সময় বেশি ব্যবহৃত হয়।

CPU Time Limit অপ্টিমাইজ করার কৌশল

  • Loop-এর ভিতরে SOQL বা DML এড়িয়ে চলুন: Loop-এর ভিতরে SOQL বা DML অপারেশন এড়িয়ে Bulk SOQL এবং DML অপারেশন ব্যবহার করুন।
  • Loop এবং Recursive Trigger অপ্টিমাইজ করুন: Unnecessary Loop বা Recursive Trigger ব্যবহার করা এড়িয়ে চলুন।
  • Efficient Algorithms ব্যবহার করুন: কোনো কার্যক্রম সম্পন্ন করার জন্য কার্যকর ও দ্রুততম অ্যালগরিদম ব্যবহার করুন।
  • Asynchronous Apex ব্যবহার করুন: বড় প্রসেস বা লং রানিং অপারেশন Async Apex (Future, Queueable, Batch Apex) ব্যবহার করে ভাগ করে নিন।

উদাহরণ: CPU Time Limit অপ্টিমাইজেশন

public class CPUTimeExample {
    public void processData() {
        List<Account> accounts = [SELECT Id, Name FROM Account LIMIT 100];

        // Loop-এর ভিতরে DML এড়িয়ে চলা
        for (Account acc : accounts) {
            acc.Name = acc.Name + ' Updated';
        }
        
        // Loop-এর বাইরে DML অপারেশন ব্যবহার করা
        update accounts;
        System.debug('CPU Time optimized by avoiding DML inside loop');
    }
}

Apex Heap Size এবং CPU Time Limit এর তুলনা

বৈশিষ্ট্যHeap SizeCPU Time Limit
প্রধান উদ্দেশ্যমেমোরিতে ডেটা সংরক্ষণের সীমা নির্ধারণকোড এক্সিকিউশনের CPU সময় নির্ধারণ
সীমাSync-এ ৬ এমবি, Async-এ ১২ এমবি১০,০০০ মিলিসেকেন্ড (১০ সেকেন্ড)
ExceptionApex heap size too largeApex CPU time limit exceeded
অপ্টিমাইজেশনের কৌশলডেটাসেট ফিল্টার, Batch Apex ব্যবহার করাLoop অপ্টিমাইজ, Async Apex ব্যবহার করা
ব্যবহারবড় ডেটাসেট বা অনেক অবজেক্ট প্রসেস করাবড় লজিক, Loop বা Recursive Trigger হ্যান্ডল করা

অপ্টিমাইজেশনের ভালো অনুশীলন

অপ্রয়োজনীয় ডেটা হ্যান্ডেলিং এড়িয়ে চলুন: মেমোরিতে ডেটা জমা রাখার সময় শুধু প্রয়োজনীয় তথ্য রাখুন এবং বড় ডেটাসেট দ্রুত রিলিজ করুন।

Async Apex ব্যবহার: বড় ও লং রানিং অপারেশন বা বড় ডেটাসেট প্রসেসিং করার জন্য Asynchronous Apex (Batch, Future, Queueable) ব্যবহার করুন।

Debug Logs এবং Governor Limits ব্যবহার করুন: Debug Logs এবং Governor Limits মনিটরিং করে অপ্টিমাইজেশন এবং অপ্টিমাইজেশন সমস্যাগুলো চিহ্নিত করুন।


সারসংক্ষেপ

  • Heap Size লিমিট একটি Transaction-এ মেমোরিতে ডেটার আকার সীমিত করে, যা বড় ডেটাসেট বা অবজেক্ট নিয়ে কাজের সময় প্রভাব ফেলে।
  • CPU Time Limit একটি Transaction-এ কোড এক্সিকিউশনের সময় সীমিত করে, যা বড় লজিক বা Loop অপারেশনের সময় প্রভাব ফেলে।
  • অপ্টিমাইজেশনের মাধ্যমে কার্যক্ষমতা বৃদ্ধি: ডেটাসেট এবং লজিক অপ্টিমাইজেশন করে Heap Size এবং CPU Time Limit-এর মধ্যে থেকে কার্যক্ষমতা নিশ্চিত করা যায়।

Apex Heap Size এবং CPU Time Limit Salesforce-এর Governor Limits-এর গুরুত্বপূর্ণ অংশ, যা কোডের কার্যক্ষমতা উন্নত করতে ও সীমার মধ্যে কার্যক্রম পরিচালনা করতে সহায়ক।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion